package String类型;

/**
 * 项目名称：Demo01
 * 类 名 称：StringClass
 * 类 描 述：TODO
 * 创建时间：2021/03/15 10:47
 * 创 建 人：XiaoCoder
 */
public class StringClass {
    //String s = "Hello";s = s + " world!";这两行代码执行后，原始的 String 对象中的内容变了没有？答案：没有
    public static void main(String[] args) {
        String s = "Hello";
        System.out.println("改变前的hashcode值："+s.hashCode());
        s = s + "world!";
        System.out.println("改变后的hashcode值："+s.hashCode());

        /*
            结果：
                改变前的hashcode值：69609650
                改变后的hashcode值：1650438657
            说明：
                    由于String 是被final修饰的,s先指向一个"hello"对象，然后对s + "world！" 那么s指向的哪个对象就发生了改变，
                指向了新的地址值，然后原来的对象一直会留在内存中，增加内存开销。
                所以一般会用StringBuild、StringBuffer减小内存的开销。
         */
        
    }
}
